A geographic information system (GIS) captures, stores, analyzes, and manages data and associated attributes that are spatially referenced to Earth. The GIS can integrate hardware, software, and data for presenting spatial or geographical data to an end user. The GIS can function within or in conjunction with any number of devices or applications such as servers, web-browsers, desktops, and mobile devices. The GIS may provide information about the location of items, such as buildings, streets, and utilities, among others.
A GIS can arrange millions of tiles images in a mosaic to create an illusion of a large seamless image, each tile containing an image that is, for example, 256×256 pixels. To organize the millions of tile images, a coordinate system is used whereby each tile image is identified by x and y coordinates describing tile position. A z coordinate is used to describe a zoom level. For example, a first tile image in the system has x/y/z coordinates of 0/0/0.
The GIS includes a GIS map client that can generate and transmit a request to a remote spatial server (e.g., a map server), which determines which tile images need to be retrieved and supplied to the GIS client to respond to the particular request. The GIS client downloads the tile images from the map server and renders the map by positioning the tile images on a page. Tile images may be stored in random access memory in the process of rendering the requested map.
The data transfers associated with rendering a map composed of downloaded GIS tile images can cause undesired delays and drain processor resources of the GIS, map client, or spatial server, depending on factors such as complexity of a request, communications network connectivity and power constraints of the GIS processor, among others. In addition, the requesting device or system associated with the map client may be a mobile device that experiences periods of suboptimal connectivity, e.g., due to geography or network interruptions. In such circumstances, map rendering may be slow or impossible, which negatively impacts reliability.
Various efforts have been pursued to address the constraints associated with the generating and/or rendering of tile images. For example, a map can be generated at least in part by using tile images retrieved from a cache in a local memory associated with the requesting client, where the tiles are stored as an “extract” compiled by the GIS server based on map properties such as a location or an identifier. Once the GIS server generates the extract by retrieving the necessary tile images and associated data, the extract can be transmitted to the requesting device and stored again to the cache for future retrieval. When the same tile images are needed for a future request, turnaround time is greatly reduced by retrieving the tile images from local memory, and the tile images are available regardless of the connectivity status of the requesting client. However, this approach requires substantial allocation of client-side memory resources to store the necessary tile images, and the GIS server must also maintain sufficient hardware, firmware, or software resources to prepare and transmit the extracts.